package org.dromara.system.domain.bo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import org.dromara.system.domain.YzlShieldGuidanceParameters;
import org.dromara.common.mybatis.core.domain.BaseEntity;
import org.dromara.common.core.validate.AddGroup;
import org.dromara.common.core.validate.EditGroup;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import jakarta.validation.constraints.*;

import java.io.Serial;
import java.io.Serializable;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

/**
 * 盾构机 导向参数（非双护盾）业务对象 yzl_shield_guidance_parameters
 *
 * @author wfy
 * @date 2025-10-10
 */
@Data
@EqualsAndHashCode(callSuper = false)
@AutoMapper(target = YzlShieldGuidanceParameters.class, reverseConvertGenerate = false)
public class YzlShieldGuidanceParametersBo implements Serializable {

    @Serial
    private static final long serialVersionUID = 1L;


    /**
     *
     */
    private Long id;

    /**
     * 盾构机设备表主键
     */
    //@NotNull(message = "盾构机设备表主键不能为空", groups = { AddGroup.class, EditGroup.class })
    private Long shieldId;

    /**
     * 备注
     */
   //@NotBlank(message = "备注不能为空", groups = { AddGroup.class, EditGroup.class })
    private String remarks;

    /**
     * 测量时间
     */
    //@NotNull(message = "测量时间不能为空", groups = { AddGroup.class, EditGroup.class })
    private Date measurementTime;

    /**
     * 前端X坐标 (m)
     */
    //@NotBlank(message = "前端X坐标 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String headx;

    /**
     * 前端Y坐标 (m)
     */
    //@NotBlank(message = "前端Y坐标 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String heady;

    /**
     * 前端Z坐标 (m)
     */
    //@NotBlank(message = "前端Z坐标 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String headz;

    /**
     * 前端水平偏差 (mm)
     */
    //@NotBlank(message = "前端水平偏差 (mm)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String headHorizontalOffset;

    /**
     * 前端垂直偏差 (mm)
     */
    //@NotBlank(message = "前端垂直偏差 (mm)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String headVerticalOffset;

    /**
     * 前端里程 (m)
     */
    //@NotBlank(message = "前端里程 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String headMileage;

    /**
     * 中端X坐标 (m)
     */
    //@NotBlank(message = "中端X坐标 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String middlex;

    /**
     * 中端Y坐标 (m)
     */
    //@NotBlank(message = "中端Y坐标 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String middley;

    /**
     * 中端Z坐标 (m)
     */
    //@NotBlank(message = "中端Z坐标 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String middlez;

    /**
     * 中端水平偏差 (mm)
     */
    //@NotBlank(message = "中端水平偏差 (mm)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String middleHorizontalOffset;

    /**
     * 中端垂直偏差 (mm)
     */
    //@NotBlank(message = "中端垂直偏差 (mm)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String middleVerticalOffset;

    /**
     * 中端里程 (m)
     */
    //@NotBlank(message = "中端里程 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String middleMileage;

    /**
     * 后端X坐标 (m)
     */
    //@NotBlank(message = "后端X坐标 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tailx;

    /**
     * 后端Y坐标 (m)
     */
    //@NotBlank(message = "后端Y坐标 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String taily;

    /**
     * 后端Z坐标 (m)
     */
    //@NotBlank(message = "后端Z坐标 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tailz;

    /**
     * 后端水平偏差 (mm)
     */
    //@NotBlank(message = "后端水平偏差 (mm)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tailHorizontalOffset;

    /**
     * 后端垂直偏差 (mm)
     */
    //@NotBlank(message = "后端垂直偏差 (mm)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tailVerticalOffset;

    /**
     * 后端里程 (m)
     */
    //@NotBlank(message = "后端里程 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tailMileage;

    /**
     * 环号
     */
    //@NotBlank(message = "环号不能为空", groups = { AddGroup.class, EditGroup.class })
    private String ringNumber;

    /**
     * 滚动角 (°)
     */
    //@NotBlank(message = "滚动角 (°)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String rollAngle;

    /**
     * 俯仰角 (°)
     */
    //@NotBlank(message = "俯仰角 (°)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String pitchAngle;

    /**
     * 水平趋势 (mm/m)
     */
    //@NotBlank(message = "水平趋势 (mm/m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String horizontalTrend;

    /**
     * 垂直趋势 (mm/m)
     */
    //@NotBlank(message = "垂直趋势 (mm/m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String verticalTrend;

    /**
     * 累积里程 (m)
     */
    //@NotBlank(message = "累积里程 (m)不能为空", groups = { AddGroup.class, EditGroup.class })
    private String accumulatedMileage;

    /**
     * 隧道水平趋势
     */
    //@NotBlank(message = "隧道水平趋势不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tunnelHorizontalTrend;

    /**
     * 隧道垂直趋势
     */
    //@NotBlank(message = "隧道垂直趋势不能为空", groups = { AddGroup.class, EditGroup.class })
    private String tunnelVerticalTrend;

    /**
     * 图像水平趋势
     */
    //@NotBlank(message = "图像水平趋势不能为空", groups = { AddGroup.class, EditGroup.class })
    private String graphicsHorizontalTrend;

    /**
     * 图像垂直趋势
     */
    //@NotBlank(message = "图像垂直趋势不能为空", groups = { AddGroup.class, EditGroup.class })
    private String graphicsVerticalTrend;

    /**
     * 1m预测点水平偏差
     */
    //@NotBlank(message = "1m预测点水平偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predOnemHorizontalOffset;

    /**
     * 2m预测点水平偏差
     */
    //@NotBlank(message = "2m预测点水平偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predTwomHorizontalOffset;

    /**
     * 3m预测点水平偏差
     */
    //@NotBlank(message = "3m预测点水平偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predThreemHorizontalOffset;

    /**
     * 4m预测点水平偏差
     */
    //@NotBlank(message = "4m预测点水平偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predFourmHorizontalOffset;

    /**
     * 5m预测点水平偏差
     */
    //@NotBlank(message = "5m预测点水平偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predFivemHorizontalOffset;

    /**
     * 1m预测点垂直偏差
     */
    //@NotBlank(message = "1m预测点垂直偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predOnemVerticalOffset;

    /**
     * 2m预测点垂直偏差
     */
    //@NotBlank(message = "2m预测点垂直偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predTwomVerticalOffset;

    /**
     * 3m预测点垂直偏差
     */
    //@NotBlank(message = "3m预测点垂直偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predThreemVerticalOffset;

    /**
     * 4m预测点垂直偏差
     */
    //@NotBlank(message = "4m预测点垂直偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predFourmVerticalOffset;

    /**
     * 5m预测点垂直偏差
     */
    //@NotBlank(message = "5m预测点垂直偏差不能为空", groups = { AddGroup.class, EditGroup.class })
    private String predFivemVerticalOffset;


}
